// var x = 10;
// console.log("x = ", x);
// {
//     var x = 2;
//     console.log("x = ", x);
// }
// console.log("x = ", x);

// MyApp = {};

// // 对象的属性可以动态添加
// MyApp.name = "jack";


// {
//     let y = 2;
//     console.log("y = ", y);
// }

// console.log("y = ", y);



// var a = 1;

// {
//     let a = 2;
// }

// console.log("a", a);

{
    // var a = 2;
    let a = 3;
}

let a = 1;

console.log("a", a);


let x = 10;


let y = ++x;

console.log("x = ", x); // 11
console.log("y = ", y); // 11

// Math.pow(x, 2);
console.log(x ** 2); // 121

let num = 10;

console.log(num + true); // 11
console.log(num + false); // 10
console.log(num + null); // 10
console.log(num + undefined); // NaN (Not a Number)
console.log(num + NaN); // NaN
console.log(num + "10"); // 1010
console.log(num + "abc"); // 10abc
console.log(num + []); // 10
console.log(num + {}); // 10[object Object]
console.log(num + [10]); // 1010
console.log(num + [10, 20]); // 1010,20


// 1. 任何值与字符串相加，都会转换成字符串

console.log("=============================");
console.log(num - true); // 9
console.log(num - false); // 10
console.log(num - null); // 10
console.log(num - undefined); // NaN (Not a Number)
console.log(num - NaN); // NaN
console.log(num - "10"); // 0
console.log(num - "abc"); // NaN
console.log(num - []); // 10
console.log(num - {}); // NaN
console.log(num - [10]); // 0
console.log(num - [10, 20]); // NaN


console.log("abc" - "abc"); // NaN


// 比较
console.log("=============================");

console.log(10 == 10); // true
console.log(10 == "10"); // true
console.log(10 == true); // false

console.log(10 === 10); // true
console.log(10 === "10"); // false


console.log(10 !== "10");

// 任意类型都可以转换成布尔类型
console.log("=============================");
/*
    数值是 0 表示 false，非 0 表示 true
    字符串是 "" 表示 false，非 "" 表示 true
    null/undefined/NaN 表示 false
    对象表示 true
    Symbol 表示 true
    Infinity 表示 true
*/
let flag = Infinity;
if (flag) {
    console.log("flag is true");
} else {
    console.log("flag is false");
}

let aa = 5;
// 当 aa 为 false 时，o = 10，否则 o = aa 【重点】
// let o = aa || 10;

// 当 aa 为 true 时，o = 10，否则 o = aa
let o = aa && 10;
console.log(o);


console.log(8 << 1); // 16

console.log(3.0 + 1.0); // 3


let arr = [1, 2, 3, 4];
console.log(arr);

/*
    for...in 遍历对象的key
    数组的key是下标
*/
for (let i in arr) {
    console.log(arr[i]);
}


let obj = {
    name: 'zhangsan',
    age: 18
}
out: for (let i in obj) {
    // obj.name
    console.log(obj[i]);

    for (let j = 0; j < 10; j++) {
        break out;
    }
}






